import type { PageParam, PageResult } from '@vben/request';
import type { Dayjs } from 'dayjs';

import { requestClient } from '#/api/request';

export namespace CustomerProfileApi {
  /** 客户画像信息 */
  export interface CustomerProfile {
    id: number; // 
    customerId?: number; // 
    basicProfile: string; // 基础画像信息
    serviceHistory: string; // 服务历史记录
    preferenceAnalysis: string; // 偏好分析结果
    bodyCharacteristics: string; // 身体特征数据
    healthConditions: string; // 健康状况记录
    contraindications: string; // 禁忌症信息
    physicalSensitivity: string; // 身体敏感度
    techniquePreferences: string; // 手法偏好
    pressurePreferences: string; // 力度偏好
    durationPreferences: string; // 时长偏好
    environmentPreferences: string; // 环境偏好
    personalityTraits: string; // 性格特征
    stressLevel: string; // 压力水平
    relaxationPreferences: string; // 放松偏好
    privacyLevel: string; // 隐私级别
    dataSharingConsent: boolean; // 
    dataRetentionPeriod: number; // 数据保留天数
    profileVersion: number; // 
    lastUpdateTime: string | Dayjs; // 客户最后更新时间
    updateFrequency: string; // 
    memberId: number; // 会员ID
    consumptionProfile: string; // 消费画像
    preferenceProfile: string; // 偏好画像
    behaviorProfile: string; // 行为画像
    valueProfile: string; // 价值画像
    riskProfile: string; // 风险画像
    lifetimeValue: number; // 生命周期价值
    churnRisk: string; // 流失风险
    nextVisitPrediction: string | Dayjs; // 下次到店预测
    recommendedServices: string; // 推荐服务
    marketingPreferences: string; // 营销偏好
    orgId?: number; // 组织ID
    storeId?: number; // 门店ID
  }
}

/** 查询客户画像分页 */
export function getCustomerProfilePage(params: PageParam) {
  return requestClient.get<PageResult<CustomerProfileApi.CustomerProfile>>('/spa/customer-profile/page', { params });
}

/** 查询客户画像详情 */
export function getCustomerProfile(id: number) {
  return requestClient.get<CustomerProfileApi.CustomerProfile>(`/spa/customer-profile/get?id=${id}`);
}

/** 新增客户画像 */
export function createCustomerProfile(data: CustomerProfileApi.CustomerProfile) {
  return requestClient.post('/spa/customer-profile/create', data);
}

/** 修改客户画像 */
export function updateCustomerProfile(data: CustomerProfileApi.CustomerProfile) {
  return requestClient.put('/spa/customer-profile/update', data);
}

/** 删除客户画像 */
export function deleteCustomerProfile(id: number) {
  return requestClient.delete(`/spa/customer-profile/delete?id=${id}`);
}


/** 导出客户画像 */
export function exportCustomerProfile(params: any) {
  return requestClient.download('/spa/customer-profile/export-excel', { params });
}

